package br.patrimonio.inventario.entity;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

import org.hibernate.annotations.Index;

import br.patrimonio.inventario.converter.BaseEntity;

@Entity
public class Patrimonio implements Serializable, BaseEntity {
	
	private static final long serialVersionUID = 1L;

	@Id
	@Index(name="patri_id")
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name="patri_id")
	private Long id;
	
	@Column(name="patri_quantidade")
	private Integer quantidade;
	
	@Column(name="patri_sem_tombo")
	private String sem_tombo;
	
	@Column(name="patri_conservacao")
	private String conservacao;
	
	@Index(name="patri_nome")
	@Column(name="patri_nome")
	private String nome;
		
	@Column(name="patri_valor")
	private Double valor;
	
	@Index(name="fk_setor")
	@ManyToOne
	@JoinColumn(name="fk_setor")
	private Setor setor;
	
	@ManyToOne
	@JoinColumn(name="fk_convenio")
	private Convenio convenio;
	
	@Index(name="patri_tombo")
	@Column(name="patri_tombo")
	private Integer tombamento;
	
	@Column(name="patri_nd")
	private Long nd;
	
	@Column(name="patri_legenda")
	private String legenda;
	
	@Column(name="patri_origem")
	private String origem;
	
	@Column(name="patri_retombo")
	private String retombo;
	
	@Column(name="patri_termo")
	private String termo;
	
	@Column(name="patri_inventariado")
	private Boolean inventariado;
	
	@ManyToOne
	@Index(name="fk_funcionario")
	private Funcionario funcionario;

	
	//Getters and Setters

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public Integer getQuantidade() {
		return quantidade;
	}

	public void setQuantidade(Integer quantidade) {
		this.quantidade = quantidade;
	}

	public String getSem_tombo() {
		return sem_tombo;
	}

	public void setSem_tombo(String sem_tombo) {
		this.sem_tombo = sem_tombo;
	}
	
	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome.toUpperCase();
	}

	public String getConservacao() {
		return conservacao;
	}

	public void setConservacao(String conservacao) {
		this.conservacao = conservacao.toUpperCase();
	}

	public Double getValor() {
		return valor;
	}

	public void setValor(Double valor) {
		this.valor = valor;
	}

	public Setor getSetor() {
		return setor;
	}

	public void setSetor(Setor setor) {
		this.setor = setor;
	}

	public Integer getTombamento() {
		return tombamento;
	}

	public void setTombamento(Integer tombamento) {
		this.tombamento = tombamento;
	}

	public Long getNd() {
		return nd;
	}

	public void setNd(Long nd) {
		this.nd = nd;
	}

	public String getLegenda() {
		return legenda;
	}

	public void setLegenda(String legenda) {
		this.legenda = legenda;
	}

	public String getOrigem() {
		return origem;
	}

	public void setOrigem(String origem) {
		this.origem = origem;
	}
	
	public String getRetombo() {
		return retombo;
	}

	public void setRetombo(String retombo) {
		this.retombo = retombo;
	}
	
	public String getTermo() {
		return termo;
	}

	public void setTermo(String termo) {
		this.termo = termo;
	}
	
	public Convenio getConvenio() {
		return convenio;
	}

	public void setConvenio(Convenio convenio) {
		this.convenio = convenio;
	}
	
	public Funcionario getFuncionario() {
		return funcionario;
	}

	public void setFuncionario(Funcionario funcionario) {
		this.funcionario = funcionario;
	}

	public Boolean getInventariado() {
		return inventariado;
	}

	public void setInventariado(Boolean inventariado) {
		this.inventariado = inventariado;
	}

	public Double getTotal() {
		if (quantidade != null && valor != null)
			return quantidade * valor;
		else
			return null;
					
	}	
	
}
